package com.xykj.deploy.login.controller;

import com.xykj.deploy.login.entity.UserInfo;
import com.xykj.deploy.login.service.UserService;
import com.xykj.deploy.utils.Result;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

/**
 * @Author: ethan
 * @Date: 2024/11/28
 */
@Slf4j
@RestController
@RequestMapping("/api/user")
public class UserController {

    @Resource
    private UserService userService;

    @GetMapping("/info")
    public Result<UserInfo> getUserInfo(@RequestHeader("Authorization") String token) {
        token = token.replace("Bearer ", "");
        if (!userService.validateToken(token)) {
            return Result.ok("登录过期,请重新登录！");
        }
        UserInfo user = userService.getUserByToken(token);
        if (user != null) {
            user.setPassword(null);
            return Result.ok("获取用户信息成功", user);
        } else {
            return Result.error("用户不存在");
        }
    }

    @PostMapping("/update")
    public Result<UserInfo> updateUserInfo(@RequestBody UserInfo userUpdateInfo) {
        // 同样,我们需要从当前的认证上下文中获取用户 ID
        Long currentUserId = 1L;

        // 确保只能更新当前用户的信息
        userUpdateInfo.setId(currentUserId);

        // 这里我们应该只允许更新某些字段,比如 email, phone 等
        // 不应该允许更新 username, password 等敏感信息
        UserInfo updatedUser = userService.updateUser(userUpdateInfo);

        if (updatedUser != null) {
            updatedUser.setPassword(null);
            return Result.ok("更新用户信息成功", updatedUser);
        } else {
            return Result.error("更新用户信息失败");
        }
    }
}
